package com.sinotopia.atlantis.core.query.data;

/**
 * 查询接口
 *
 * @author Administrator
 */
public interface Queryable {
    /**
     * 获得分页
     *
     * @return
     */
    Pageable getPageable();

    void setPageable(Pageable pageable);

    /**
     * 获得排序
     *
     * @return
     */
    Sort getSort();

    void addSort(Sort sort);

    /**
     * 获得查询条件
     *
     * @return
     */
    Condition getCondition();

    void setCondition(Condition condition);

    /**
     * 通过字段获得值，方便自定义查询
     *
     * @return
     */
    Object getValue(String property);

    /**
     * 添加条件
     *
     * @param property
     * @param value
     * @return
     */
    Queryable addCondition(final String property, final Object value);

    /**
     * 移出条件，方便自定义条件
     *
     * @param property
     */
    void removeCondition(String property);

    boolean isConverted();

}
